package com.deco.dao.warpper.product;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.deco.dao.delegate.product.IPartsInfoDao;
import com.deco.dao.domain.table.PartsCategory;
import com.deco.dao.domain.table.PartsInfo;
import com.deco.dao.logic.product.PartsInfoDao;
import com.deco.domain.vo.product.PartsInfoVo;
import com.free.common.vo.PageResponseVo;
import com.free.ext.mybatis.model.entity.PageResponseModel;
import com.free.ext.mybatis.warpper.BaseDaoWarpper;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
@Repository
public class PartsInfoDaoWarpper extends BaseDaoWarpper<PartsInfoVo,Integer,PartsInfo> implements IPartsInfoDao {

    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/
    @Autowired
    private PartsInfoDao partsInfoDao;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    @Override
    public void registerEnums() {

    }

	@Override
	public int batchDelete(Integer[] ids) {
		return partsInfoDao.batchDelete(ids);
	}

	@Override
	public PageResponseVo<PartsInfoVo> selectByPageNoNameLike(
			PartsInfoVo conditionVo, String orderBy, Integer currentNo,
			Integer length) {
		PartsInfo tbl = convertToTable(conditionVo);
        PageResponseModel<PartsInfo> pgModel = partsInfoDao.selectByPageNoNameLike(tbl, orderBy, currentNo, length);
        return convertToViewResponseVo(pgModel);
	}

	@Override
	public List<PartsInfoVo> selectInfoList(PartsInfoVo conditionVo) {
		PartsInfo tbl = convertToTable(conditionVo);
		List<PartsInfo> res = partsInfoDao.selectInfoList(tbl);
		if(res == null || res.size() == 0){
			return new ArrayList<>();
		}
		List<PartsInfoVo> lst = new ArrayList<>();
		res.forEach(x->{
			lst.add(convertToView(x));
		});
		return lst;
	}

	@Override
	public List<PartsInfoVo> partsInfoForMenus(PartsInfoVo conditionVo) {
		PartsInfo tbl = convertToTable(conditionVo);
		List<PartsInfo> res =partsInfoDao.partsInfoForMenus(tbl);
		if(res == null || res.size() == 0){
			return new ArrayList<>();
		}
		List<PartsInfoVo> lst = new ArrayList<>();
		res.forEach(x->{
			lst.add(convertToView(x));
		});
		return lst;
	}

	@Override
	public Integer getMaxSort() {
		return partsInfoDao.getMaxSort();
	}

	/*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
